Modern word processors enable a user to readily create electronic documents. Many modern word processors include templates to facilitate the creation of new documents with certain styles and boilerplate text already embedded within them. Some additionally enable the insertion of “document parts” which usually represent reusable pieces of boilerplate content that may be relevant for specific types of documents. These typical elements could include such features as greeting lines for business letters, or contents appropriate for inclusion inside headers and footers, like page numbers or chapter titles, and the like. A user of a word processing application program typically selects a desired document part from a template created by a template author and then inserts the selected document part in the document. The creation and insertion of document parts in modern word processors however presents a number of opportunities for improvement for both the template author as well as the end user.
One drawback associated with the creation of document part templates for use in modern word processors is that there are certain limitations as to what can be included in the document part and what specific role it is intended to play once inserted into the document. For example, although one could make a reusable document part today that contains all the needed pieces of content that could be included in the a header, it is impossible today to easily mark that document part as a header-type, so that when the user selects it, the application would know that the part is expected to work as a header, as opposed to merely as a piece of rich text inserted at the user's insertion point. One of the benefits of the invention is that it adds additional semantics to the document part that define its role within the document, affect where and how it gets inserted when used by the user rather than just merely having it serve as a container, for boilerplate content, like typical “document-part” analogues of today do.
Another drawback of current word processor implementations is that they largely rely on template authors and users to define useful document parts and provide relevant content for them. This often requires time, effort, and skill on the part of the user or the template author to create them. The ability to have a number of useful professionally designed document parts that are provided out of the box by the application and represent specific elements of document structure that the application supports (e.g. header, footer, page number, cover page, table of contents) is another aspect of this invention intended to greatly reduce the burden on the user.
Another drawback associated with the insertion of document parts by an end user is that to achieve certain effects in the document, the end user must often perform a series of manual steps so that the document part will fit the size and layout of the document in which it is inserted as well as match the formatting of the surrounding content, if needed. For instance, to insert a cover page a user may perform one or more of the following time-consuming steps: 1. Insert a page break at the top of the document; 2. Center the test vertically in the page by using empty paragraph markers so that the title is displayed correctly; 3. Increase the font size of the title; 4. Add empty space to push text to the bottom of the page where the author's name and date will be displayed; 5. Right align the text and make it smaller.
Another drawback lies in the ability to organize the document parts and expose them in the UI in a manner that makes them easily discoverable to the user. Today, pre-defined document parts are typically available via a single generic entry point in the UI regardless of their type. This invention calls for the ability to reveal specific lists of predefined document parts in additional appropriate UI contexts, depending on their type. For example, document parts containing pre-defined tables would be exposed alongside the UI for arbitrary table insertion so that the user could make the choice between drawing a new table from scratch vs. reusing a pre-defined one from a list right there. Similarly, document parts of type “headers” would be exposed alongside the UI for editing headers in the document.
Another drawback with pre-defined document parts of today is that they do not provide a way to associate auxiliary information with them, such as informative text describing the document part or when it is supposed to be used. Without such a description, the user has to rely on the contents of the document part to guess how it's intended to be used. Part of this invention is the ability to associate arbitrary descriptions of document parts with individual document parts so that the user can understand more about the document part before inserting it into the document. The description would not be inserted into the document, only the contents of the document part would.
It is with respect to these considerations and others that the various embodiments of the present invention have been made.